package com.stephen.data.recursion;

/**
 * @author: stephen
 * @create: 2020-01-31 10:29
 * @description: 阶乘
 */
public class FactorialDemo {

    public static void main(String[] args) {
        // System.out.println(recursion(2));
        test(4);
    }

    /**
     * 下边的程序,if下边没有else时的结果为2,3,4
     * 栈中会有几个方法
     * test(2) n = 2
     * test(3)
     * test(4)
     * main
     * 从上到下依次执行,里边的方法执行完成后,都会执行下边的打印语句
     * 如果加了else,就只有2
     * @param n
     */
    public static void test(int n) {
        if (n > 2) {
            test(n - 1);
        }
        System.out.println("n = " + n);
    }

    public static int factorial(int n) {
        if (n == 1) {
            return 1;
        } else {
            return factorial(n-1) * n;
        }
    }
}


